package com.furyspring.factory;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 应癫
 * <p>
 * 工厂类，生产对象（使用反射技术）
 */
public class BeanFactory {

    /**
     * 任务一：读取解析xml，通过反射技术实例化对象并且存储待用（map集合）
     * 任务二：对外提供获取实例对象的接口（根据id获取）
     */
    private static final Map<String, Object> BEANS = new HashMap<>();  // 存储对象

    static {
        // 任务一：读取解析xml，通过反射技术实例化对象并且存储待用（map集合）
        XmlBeanResolver.initXmlBeans(BEANS);
        // 任务二：解析注解
        BEANS.putAll(AnnotatedBeanResolver.initAnnotationBeans());
    }

    // 任务三：对外提供获取实例对象的接口（根据id获取）
    public static Object getBean(String id) {
        return BEANS.get(id);
    }
}
